package com.cjhstudy.mall.service;

import com.cjhstudy.mall.form.CartAddForm;
import com.cjhstudy.mall.form.CartUpdateForm;
import com.cjhstudy.mall.pojo.Cart;
import com.cjhstudy.mall.vo.CartVo;
import com.cjhstudy.mall.vo.ResponseVo;

import java.util.List;

/**
 * @author: phil
 * @ProjectName: mall
 * @Date: 2021/12/10
 */

public interface ICartService {

    /**
     * 加入购物车
     * @param uid 用户id
     * @param form 添加购物车的表单
     * @return 添加好后的购物车信息
     */
    ResponseVo<CartVo> add(Integer uid,CartAddForm form);

    /**
     * 查询购物车的列表
     * @param uid 用户id
     * @return 返回购物车列表信息
     */
    ResponseVo<CartVo> list(Integer uid);

    /**
     * 跟心购物车的商品信息
     * @param uid 用户id
     * @param productId 商品id
     * @param form 更新的表单
     * @return 返回更新好的购物车信息
     */
    ResponseVo<CartVo> update(Integer uid, Integer productId, CartUpdateForm form);

    /**
     * 删除购物车的商品
     * @param uid 用户商品
     * @param productId 购物车的商品id
     * @return 删除后的购物车信息
     */
    ResponseVo<CartVo> delete(Integer uid,Integer productId);


    /**
     * 全选购物车的商品
     * @param uid 用户id
     * @return 返回全选购物车的列表信息
     */
    ResponseVo<CartVo> selectAll(Integer uid);

    /**
     * 全不选择购物车的商品
     * @param uid 用户id
     * @return 返回全部选的购物车信息
     */
    ResponseVo<CartVo> unSelectAll(Integer uid);

    /**
     * 查询购物车所有的物品数量
     * @param uid 用户id
     * @return 返回购物车的商品数量
     */
    ResponseVo<Integer> sum(Integer uid);


    /**
     * 返回redis中的所有商品信息
     * @param uid 用户id
     * @return 返回商品的对象信息集合
     */
    List<Cart> listForCart(Integer uid);
}
